package multiplus.base;

import java.sql.SQLException;

import org.springframework.transaction.annotation.Transactional;

/**
 * 通用service基类
 * 
 * @author 李晓丹
 * 
 * @param <E>
 * @param <PK>
 */
@Transactional
public abstract class BaseService<E, PK> {
	protected abstract IBaseDao<E, PK> getEntityDao();

	/**
	 * 保存
	 * 
	 * @param e
	 * @throws SQLException
	 */
	public void save(E e) throws SQLException {
		this.getEntityDao().save(e);
	}

	/**
	 * 根據主鍵刪除
	 * 
	 * @param p
	 * @return
	 * @throws SQLException
	 */
	public int delete(PK p) throws SQLException {
		return this.getEntityDao().delete(p);
	}

	/**
	 * 更新实体
	 * 
	 * @param e
	 * @return
	 * @throws SQLException
	 */
	public int update(E e) throws SQLException {
		return this.getEntityDao().update(e);
	}

	/**
	 * 根据主键查询实体
	 * 
	 * @param p
	 * @return
	 * @throws SQLException
	 */
	public E get(PK p) throws SQLException {
		return (E) this.getEntityDao().get(p);
	}
}
